home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1996-03-19 | 7.8 KB | 201 lines |
- Syntax20b.Scn.Fnt
- ParcElems
- Alloc
- Syntax24b.Scn.Fnt
- Syntax10.Scn.Fnt
- Syntax10b.Scn.Fnt
- FoldElems
- (* AMIGA *)
- MODULE AmigaIFFParse; (* Ralf Degner 25.07.1995 *)
- IMPORT
- SYSTEM, AmigaBase, AmigaExec, Amiga;
- CONST
- read*= {}; write*= {0}; rwBits*= read+write; fSeek*= {1}; rSeek*= {2};
- parseScan*= 0; parseStep*= 1; parseRawStep*= 2;
- sizeUnknown*= -1;
- IFFHandlePtr*= POINTER TO IFFHandle;
- IFFHandle*= RECORD
- stream*: LONGINT;
- flgas*: SET;
- depth*: LONGINT;
- END;
- ContextNodePtr*= POINTER TO ContextNode;
- ContextNode*= RECORD(AmigaExec.MinNode)
- id*: LONGINT;
- type*: LONGINT;
- size*: LONGINT;
- scan*: LONGINT;
- END;
- StoredPropertyPtr*= POINTER TO StoredProperty;
- StoredProperty*= RECORD
- size*: LONGINT;
- data*: LONGINT;
- END;
- IOClipReqPtr*= POINTER TO IOClipReq;
- IOClipReq*= RECORD
- device*: AmigaExec.DevicePtr;
- unit*: LONGINT;
- command*: INTEGER;
- flags*: SHORTINT;
- error*: SHORTINT;
- actual*: LONGINT;
- length*: LONGINT;
- data*: LONGINT;
- offset*: LONGINT;
- clipID*: LONGINT;
- END;
- ClipboardHandlePtr*= POINTER TO ClipboardHandle;
- ClipboardHandle*= RECORD
- cbport*: AmigaExec.MsgPort;
- satisfyPort*: AmigaExec.MsgPort;
- END;
- CollectionItemPtr*= POINTER TO CollectionItem;
- CollectionItem*= RECORD
- next*: CollectionItemPtr;
- size*: LONGINT;
- data*: LONGINT;
- END;
- IFFLib: LONGINT;
- D: AmigaBase.Regs;
- PROCEDURE AllocIFF*(): IFFHandlePtr;
- BEGIN
- AmigaBase.LibCall(IFFLib, -30, D);
- RETURN SYSTEM.VAL(IFFHandlePtr, D.d[0])
- END AllocIFF;
- PROCEDURE OpenIFF*(iff: IFFHandlePtr; modes: SET): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=SYSTEM.VAL(LONGINT, modes);
- AmigaBase.LibCall(IFFLib, -36, D);
- RETURN D.d[0]
- END OpenIFF;
- PROCEDURE ParseIFF*(iff: IFFHandlePtr; control: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=control;
- AmigaBase.LibCall(IFFLib, -42, D);
- RETURN D.d[0]
- END ParseIFF;
- PROCEDURE CloseIFF*(iff: IFFHandlePtr);
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -48, D)
- END CloseIFF;
- PROCEDURE FreeIFF*(iff: IFFHandlePtr);
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -54, D)
- END FreeIFF;
- PROCEDURE ReadChunkBytes*(iff: IFFHandlePtr; buf, num: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.a[1]:=buf;
- D.d[0]:=num;
- AmigaBase.LibCall(IFFLib, -60, D);
- RETURN D.d[0]
- END ReadChunkBytes;
- PROCEDURE WriteChunkBytes*(iff: IFFHandlePtr; buf, num: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.a[1]:=buf;
- D.d[0]:=num;
- AmigaBase.LibCall(IFFLib, -66, D);
- RETURN D.d[0]
- END WriteChunkBytes;
- PROCEDURE PushChunk*(iff: IFFHandlePtr; type, id, size: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id; D.d[2]:=size;
- AmigaBase.LibCall(IFFLib, -84, D);
- RETURN D.d[0]
- END PushChunk;
- PROCEDURE PopChunk*(iff: IFFHandlePtr): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -90, D);
- RETURN D.d[0]
- END PopChunk;
- PROCEDURE PropChunk*(iff: IFFHandlePtr; type, id: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id;
- AmigaBase.LibCall(IFFLib, -114, D);
- RETURN D.d[0]
- END PropChunk;
- PROCEDURE StopChunk*(iff: IFFHandlePtr; type, id: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id;
- AmigaBase.LibCall(IFFLib, -126, D);
- RETURN D.d[0]
- END StopChunk;
- PROCEDURE CollectionChunk*(iff: IFFHandlePtr; type, id: LONGINT): LONGINT;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id;
- AmigaBase.LibCall(IFFLib, -138, D);
- RETURN D.d[0]
- END CollectionChunk;
- PROCEDURE FindProp*(iff: IFFHandlePtr; type, id: LONGINT): StoredPropertyPtr;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id;
- AmigaBase.LibCall(IFFLib, -156, D);
- RETURN SYSTEM.VAL(StoredPropertyPtr, D.d[0]);
- END FindProp;
- PROCEDURE FindCollection*(iff: IFFHandlePtr; type, id: LONGINT): CollectionItemPtr;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- D.d[0]:=type; D.d[1]:=id;
- AmigaBase.LibCall(IFFLib, -162, D);
- RETURN SYSTEM.VAL(CollectionItemPtr, D.d[0]);
- END FindCollection;
- PROCEDURE FindPropContext*(iff: IFFHandlePtr): ContextNodePtr;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -168, D);
- RETURN SYSTEM.VAL(ContextNodePtr, D.d[0]);
- END FindPropContext;
- PROCEDURE CurrentChunk*(iff: IFFHandlePtr): ContextNodePtr;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -174, D);
- RETURN SYSTEM.VAL(ContextNodePtr, D.d[0]);
- END CurrentChunk;
- PROCEDURE ParentChunk*(contextNode: ContextNodePtr): ContextNodePtr;
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, contextNode);
- AmigaBase.LibCall(IFFLib, -180, D);
- RETURN SYSTEM.VAL(ContextNodePtr, D.d[0]);
- END ParentChunk;
- PROCEDURE InitIFFasDOS*(iff: IFFHandlePtr);
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -234, D);
- END InitIFFasDOS;
- PROCEDURE InitIFFasClip*(iff: IFFHandlePtr);
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, iff);
- AmigaBase.LibCall(IFFLib, -240, D);
- END InitIFFasClip;
- PROCEDURE OpenClipboard*(unit: LONGINT): ClipboardHandlePtr;
- BEGIN
- D.d[0]:=unit;
- AmigaBase.LibCall(IFFLib, -246, D);
- RETURN SYSTEM.VAL(ClipboardHandlePtr, D.d[0]);
- END OpenClipboard;
- PROCEDURE CloseClipboard*(clipHan: ClipboardHandlePtr);
- BEGIN
- D.a[0]:=SYSTEM.VAL(LONGINT, clipHan);
- AmigaBase.LibCall(IFFLib, -252, D);
- END CloseClipboard;
- PROCEDURE TermProc;
- BEGIN
- D.a[1]:=IFFLib;
- IF IFFLib#0 THEN AmigaBase.LibCall(AmigaBase.ExecBase(), -414, D) END
- END TermProc;
- BEGIN
- IFFLib:=AmigaExec.OpenLibrary("iffparse.library", 0);
- Amiga.TermProcedure(TermProc)
- END AmigaIFFParse.
-